#                     集合
# 集合 set 构建
# 字面值
sxt_set = {'a', 'a', 'b', 'c', 'd', 1, 2.8, False}
print(type(sxt_set), sxt_set)

# 构造函数
sxt_set = set([1,2,3,4,5,5,6])
print(sxt_set, type(sxt_set))
sxt_set = set((1,2,3,4,5,5,6))
print(sxt_set, type(sxt_set))
sxt_set = set({'age':18,'uname':'shsxt','uname':'shsxt'}) #
字典保留 key 丢弃 value
print(sxt_set, type(sxt_set))


# 数学操作
sxt_set = {1,2,3,4,3} & {1,2,7,8,5} # 交集 set1.intersection(set2)
print(sxt_set)
sxt_set = {1,2,3,4,3} | {1,2,7,8,5} # 并集 set1.union(set2)
print(sxt_set)
sxt_set = {1,2,3,4,3} - {1,2,7,8,5} # 差集 set1.difference(set2)
print(sxt_set)
sxt_set = {1,2,3,4,3} ^ {1,2,7,8,5} # 对称差集
set1.symmetric_difference(set2)
print(sxt_set)


# 常用方法
fruits = {'apple', 'orange', 'pear', 'tomato', 'cucumber'}
#增加 相关
fruits.add("banana")
print("添加香蕉：", fruits)
print("*"*50)
#删除 相关
fruits.remove('apple') # 如果移除的元素不在集合中就会报错
print("移除 apple 后：", fruits)
fruits.discard("pear") # 跟 remove()的区别就是移除的元素可以不在集合中
print("移除元素后：", fruits)
print("*"*50)
# 随机弹出一个元素
random_fruit = fruits.pop()
print("随机弹出一个元素：", random_fruit)
print("fruits 是否包含 apple", fruits.__contains__('apple'))
new_fruits = fruits.copy()
print("复制一个集合：", new_fruits)
print("*"*50)
# 清空元素
fruits.clear()
print("清空元素后：", fruits)
print("*"*50)
# 包装成定长集合，没有了 add remove 方法
s = frozenset(('a', 'a', 'b', 'c', 'd', 1, 2.8, False))
s.add('f') # 报错